/*
* Author: Chris Seguin
*
* This software has been developed under the copyleft
* rules of the GNU General Public License. Please
* consult the GNU General Public License for more
* details about use and distribution of this software.
*/
package org.acm.seguin.ide.command;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import org.acm.seguin.ide.common.UndoAdapter;
import org.acm.seguin.io.Saveable;
import org.acm.seguin.uml.SaveMenuSelection;
import org.acm.seguin.uml.UMLPackage;
import org.acm.seguin.uml.jpg.SaveAdapter;
import org.acm.seguin.uml.line.LinedPanel;
import org.acm.seguin.uml.print.PrintAdapter;
import org.acm.seguin.uml.print.PrintSetupAdapter;
/**
* Creates the menubar for the command line program
*
*@author Chris Seguin
*/
class CommandLineMenu {
/**
* Gets the MenuBar attribute of the CommandLineMenu object
*
*@param panel Description of Parameter
*@return The MenuBar value
*/
public JMenuBar getMenuBar(JPanel panel)
{
JMenuBar menubar = new JMenuBar();
menubar.add(createFileMenu(panel));
menubar.add(createEditMenu());
if (panel instanceof LinedPanel) {
menubar.add(createZoomMenu(panel));
}
return menubar;
}
/**
* Creates the file menu
*
*@param panel the panel
*@return the file menu
*/
private JMenu createFileMenu(JPanel panel)
{
JMenu fileMenu = new JMenu("File");
JMenuItem saveMenuItem = new JMenuItem("Save");
if (panel instanceof Saveable) {
saveMenuItem.addActionListener(new SaveMenuSelection((Saveable) panel));
}
else {
saveMenuItem.setEnabled(false);
}
fileMenu.add(saveMenuItem);
JMenuItem jpgMenuItem = new JMenuItem("JPG");
if (panel instanceof UMLPackage) {
jpgMenuItem.addActionListener(new SaveAdapter((UMLPackage) panel));
}
else {
jpgMenuItem.setEnabled(false);
}
fileMenu.add(jpgMenuItem);
fileMenu.addSeparator();
JMenuItem printSetupMenuItem = new JMenuItem("Print Setup");
printSetupMenuItem.addActionListener(new PrintSetupAdapter());
fileMenu.add(printSetupMenuItem);
JMenuItem printMenuItem = new JMenuItem("Print");
if (panel instanceof UMLPackage) {
printMenuItem.addActionListener(new PrintAdapter((UMLPackage) panel));
}
else {
printMenuItem.setEnabled(false);
}
fileMenu.add(printMenuItem);
fileMenu.addSeparator();
JMenuItem exitMenuItem = new JMenuItem("Exit");
exitMenuItem.addActionListener(new ExitMenuSelection());
fileMenu.add(exitMenuItem);
return fileMenu;
}
/**
* Creates edit menu
*
*@return returns the edit menu
*/
private JMenu createEditMenu()
{
JMenu editMenu = new JMenu("Edit");
JMenuItem undoMenuItem = new JMenuItem("Undo Refactoring");
undoMenuItem.addActionListener(new UndoAdapter());
editMenu.add(undoMenuItem);
return editMenu;
}
/**
* Creates the zoom menu
*
*@param panel the panel
*@return the zoom menu
*/
private JMenu createZoomMenu(JPanel panel)
{
LinedPanel linedPanel = (LinedPanel) panel;
JMenu zoomMenu = new JMenu("Zoom");
JMenuItem tenPercent = new JMenuItem("10%");
tenPercent.addActionListener(new ZoomAdapter(linedPanel, 0.1));
zoomMenu.add(tenPercent);
JMenuItem twentyFivePercent = new JMenuItem("25%");
twentyFivePercent.addActionListener(new ZoomAdapter(linedPanel, 0.25));
zoomMenu.add(twentyFivePercent);
JMenuItem fiftyPercent = new JMenuItem("50%");
fiftyPercent.addActionListener(new ZoomAdapter(linedPanel, 0.5));
zoomMenu.add(fiftyPercent);
JMenuItem normal = new JMenuItem("100%");
normal.addActionListener(new ZoomAdapter(linedPanel, 1.0));
zoomMenu.add(normal);
JMenuItem twoHunderd = new JMenuItem("200%");
twoHunderd.addActionListener(new ZoomAdapter(linedPanel, 2.0));
zoomMenu.add(twoHunderd);
return zoomMenu;
}
}